1. Field of the Invention
The present invention relates to RAID storage subsystems and in particular to methods and associated apparatus which balance the load of processing I/O requests among a plurality of controllers within such storage subsystems.
2. Discussion of Related Art
It is known in the art that a plurality of host computing systems may be attached to a common storage subsystem. In such a configuration several host generated I/O requests may be transmitted to the storage subsystem for processing. It is also known to utilize a plurality of controllers within a storage subsystem to enhance reliability and/or performance. As discussed in co-pending patent application 96-029, a plurality of control modules (also referred to herein as controllers) may be used within a single storage subsystem to enhance reliability (through redundancy) as well as to enhance performance (through coordinated shared access to commonly attached storage devices).
Older (e.g., legacy) host computer systems generating I/O requests are typically unaware of the plurality of controllers within the storage subsystem. In fact, such multiple controller storage systems are typically designed to make the added processing power transparent to the attached host systems. It is therefore possible for the attached host systems to overload one of the plurality of controllers within the storage subsystem by transmitting all I/O requests to a single controller in the storage subsystem.
Host computer systems attached to multiple controller storage subsystems may be modified to more fully utilize the processing power of the multiple controllers by distributing the I/O requests evenly over the plurality of controllers in the storage subsystem. However, it is often undesirable or impossible to modify older (legacy) systems to enhance performance by balancing loads over the storage subsystems in accordance with the needs of a new storage subsystem. In addition, in many common multiple host attachment configurations, the hosts have no knowledge of the loads imposed on the common storage device by other host systems thereby making host side load balancing impossible.
In view of the above it is clear that a need exists for an improved method and apparatus for distributing I/O requests from host computer among a plurality of controllers within a storage subsystem. In particular, a need exists for so distributing I/O requests to balance the processing load over a plurality of storage subsystem controllers in a manner which is transparent to attached legacy host computing systems.